import 'package:flutter/widgets.dart';

class AppearanceSettingsPageTranslation {
  static final delegate = _AppearanceSettingsPageTranslationDelegate();

  static AppearanceSettingsPageTranslation of(BuildContext context) {
    return Localizations.of(context, AppearanceSettingsPageTranslation);
  }

  late String _languageCode;

  Future<void> load(Locale locale) async {
    _languageCode = locale.languageCode;
  }

  String _resolve(Map<String, String> translations) {
    return translations[_languageCode]!;
  }

  String get title {
    return _resolve(const {
      'ru': 'Оформление',
      'en': 'Appearance',
    });
  }

  String get themeTileGroupHeader {
    return _resolve(const {
      'ru': 'Тема',
      'en': 'Theme',
    });
  }

  String get lightThemeModeTileTitle {
    return _resolve(const {
      'ru': 'Светлая',
      'en': 'Light',
    });
  }

  String get darkThemeModeTileTitle {
    return _resolve(const {
      'ru': 'Тёмная',
      'en': 'Dark',
    });
  }

  String get systemThemeModeTileTitle {
    return _resolve(const {
      'ru': 'Системная',
      'en': 'System',
    });
  }

  String get primaryColorTileGroupHeader {
    return _resolve(const {
      'ru': 'Акцент',
      'en': 'Accent',
    });
  }

  String get rubyPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'маджента',
      'en': 'magenta',
    });
  }

  String get radicalRedPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'райское яблоко',
      'en': 'paradise apple',
    });
  }

  String get redOrangePrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'красный апельсин',
      'en': 'red orange',
    });
  }

  String get sunsetOrangePrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'красный апельсин',
      'en': 'red orange',
    });
  }

  String get venetianRedPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'венецианский красный',
      'en': 'Venetian red',
    });
  }

  String get paleVioletRedPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'розовая фуксия',
      'en': 'pink fuchsia',
    });
  }

  String get mediumOrchidPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'фиалковый',
      'en': 'violet',
    });
  }

  String get mediumPurplePrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'лавандовый',
      'en': 'lavender',
    });
  }

  String get dodgerBluePrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'синее небо',
      'en': 'blue sky',
    });
  }

  String get summerSkyPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'летнее небо',
      'en': 'summer sky',
    });
  }

  String get malibuPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'лазурное небо',
      'en': 'azure sky',
    });
  }

  String get lightSlateGreyPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'серый шифер',
      'en': 'grey slate',
    });
  }

  String get emeraldPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'малахитовый',
      'en': 'malachite',
    });
  }

  String get limeGreenPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'зелёный лайм',
      'en': 'lime green',
    });
  }

  String get tangerineYellowPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'банановый',
      'en': 'banana',
    });
  }

  String get parisDaisyPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'лимонный',
      'en': 'lemony',
    });
  }

  String get neonCarrotPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'апельсиновый',
      'en': 'orange',
    });
  }

  String get carrotOrangePrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'апельсиновый',
      'en': 'orange',
    });
  }

  String get whitePrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'белый',
      'en': 'white',
    });
  }

  String get blackPrimaryColorTileTitle {
    return _resolve(const {
      'ru': 'чёрный',
      'en': 'black',
    });
  }
}

class _AppearanceSettingsPageTranslationDelegate
    extends LocalizationsDelegate<AppearanceSettingsPageTranslation> {
  @override
  bool isSupported(Locale locale) => const ['ru', 'en'].contains(locale.languageCode);

  @override
  bool shouldReload(LocalizationsDelegate<AppearanceSettingsPageTranslation> old) => false;

  @override
  Future<AppearanceSettingsPageTranslation> load(Locale locale) async {
    final translation = AppearanceSettingsPageTranslation();
    await translation.load(locale);
    return translation;
  }
}
